home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 27 / CU Amiga Magazine's Super CD-ROM 27 (1998)(EMAP Images)(GB)[!][issue 1998-10].iso / CUCD / PowerPC / vbcc / machines / amigawos / libsrc / stdio / _flushbuf.c < prev    next >
C/C++ Source or Header  |  1998-08-02  |  544b  |  32 lines

  1. #include <stdio.h>
  2. #include <errno.h>
  3.  
  4. /* writes remaining data from buffer */
  5. int _flushbuf(FILE *f)
  6. {
  7.   _chkabort();
  8.   if (!f) {
  9.     errno = EBADF;
  10.     return (EOF);
  11.   }
  12.   if (!f->bufsize)
  13.     f->bufsize = (f->flags&_UNBUF) ? 1 : BUFSIZ;
  14.   if (!f->base)
  15.     return (0);
  16.  
  17.   if (f->flags&_WRITE) {
  18.     long len=f->bufsize-f->count;
  19.     if (_write(f->filehandle,f->base,len) != len)
  20.       return (EOF);
  21.   }
  22.   else {
  23.     errno = EBADF;
  24.     return (EOF);
  25.   }
  26.  
  27.   f->pointer = f->base;
  28.   f->count = 0;
  29.   f->flags &= ~(_READ|_WRITE);
  30.   return (0);
  31. }
  32.